"""文件对象的操作"""""

'''如何操作文件'''
# 在python使用内置函数open()来对文件进行操作
# open()参数
# 1、file 用来指明被操作文件的路径，用字符串传递
# 2、mode 操作模式
# a、'r'：只读模式
# b、'w'：编辑模式，不能读只能写（如果不移动指针，那么会对源内容进行覆盖）
# c、'a'：追加模式，在文件的末尾追加新内容
# d、'b'：字节模式，文件的内容以二进制流进行传输，可以与 r 、w 、a去配合使用 'rb' 'wb'
# e、'+'：读写模式，又能读取又能写入，需要与 r 、w 、a去配合使用 'r+' 'w+' 'a+'
# f、'x'：创建并写入模式，自动创建文件并写入内容
# 3、encoding 指定编码格式，常见的编码格式 utf-8 gbk ANSI

'''文件内容的读取操作'''
# file_obj = open('./test.txt','r',encoding='utf-8') # 打开文件
file_obj = open('./11.text', 'r', encoding='utf-8')
# print(type(file_obj)) # <class '_io.TextIOWrapper'>
# print(file_obj.read()) # 读取全部内容，read(int) -> int 代表要查看的字符数量
# file_obj.seek(0) # 移动指针，0就是文件的开头，单位是字节
# # seek(偏移量，起始位置)
#     # 起始位置有3个可选值，默认值0
#     # 0代表是从文件开头偏移
#     # 1代表以当前位置开始偏移，二进制的模式下才可以使用
#     # 2代表以文件末尾以起点，二进制模式下才可以使用
# print(file_obj.read(3))
# file_obj.seek(3) # 向右移动3个字节
# print(file_obj.read(2))

'''覆盖/追加内容'''
# # 覆盖
# file_obj = open('./11.text','w',encoding='utf-8')
# data = '沈阳市沈河区'
# file_obj.write(data) # 写完要及时保存,保存完才能体现出来
# file_obj.flush() # 保存

# # 追加
# file_obj = open('./11.text','a',encoding='utf-8')
# data = '旭辉中心B座'
# file_obj.write(data)
# file_obj.flush()

'''更新内容'''
# 使用三方库对文件操作，实时更新
# 将新内容编辑好之后，直接覆盖

'''删除内容'''
# # 需要与指针位置配合使用
file_obj = open('./11.text','r+',encoding='utf-8')
# # utf-8编码下，一个汉字占用3个字节，移动30偏移量
# file_obj.seek(30)
# file_obj.truncate() # 删除"B座"
# file_obj.flush()
# file_obj.close() # 关闭文件

'''上下文管理工具'''
# 使用python内置关键字 “with” 来操作文件
# with open('./11.text', 'r', encoding='utf-8') as file_obj:
# print(file_obj.read())with open